package review.Day_0331;

import java.util.Stack;

/**
 * @author zxc
 * @date 2023/03/31 21:44
 **/
public class Solution01 {
    // 思路 ：即，使用辅助栈temp来模拟入栈出栈，若是按照pushed数组所入栈的元素，都能够按照popped数组出栈的话，则代表符合条件
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        int len = pushed.length;
        // 双指针分别指向当前正在遍历的pushed数组中元素 && popped数组中元素;
        int p1 = 0;
        int p2 = 0;
        Stack<Integer> stack = new Stack<>();
        while(p1 < len){
            // 即，pushed数组中当前所指向的元素压入栈中;
            stack.push(pushed[p1++]);
            // 当前栈不为空 && 当前栈顶元素与popped数组中当前所指向的元素一样
            while(!stack.isEmpty() && stack.peek() == popped[p2]){
                // 弹出栈顶元素
                stack.pop();
                p2++;
            }
        }
        if(stack.isEmpty()){
            return true;
        }
        return false;
    }
}
